using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;

namespace ibba.src.norisk
{


    public partial class PageProdutoModalidade : Page
    {
        #region variaveis

            private List<ServiceProdutoModalidade.ProdutoModalidade> _produtos;
            private PageDetalheProdutoModalidade _pageDetalheProdutoModalidade;
            private PageProdutoModalidadeImpExcel _pageProdutoModalidadeImpExcel;
            private PageProdutoModalidadeExpExcel _pageProdutoModalidadeExpExcel;
            private int qtdPesquisaProd;
            private int qtdPesquisaMod;

        #endregion

           

        public PageProdutoModalidade()
        {
            InitializeComponent();

            _pageDetalheProdutoModalidade = new PageDetalheProdutoModalidade();
            _pageProdutoModalidadeImpExcel = new PageProdutoModalidadeImpExcel();
            _pageProdutoModalidadeExpExcel = new PageProdutoModalidadeExpExcel();

            //barraMenu.User = AppHelper.NomeUsuario;

            //System.Windows.Browser.HtmlPage.Plugin.Focus();

            //this.Focus();

            txtPesquisa.MinimumPopulateDelay = 500;
            txtPesquisa.MinimumPrefixLength = 2;
            
            _produtos = new List<ibba.src.norisk.ServiceProdutoModalidade.ProdutoModalidade>();

            PopularComboTipoPesquisa();

            CarregarBarraBotoes();

            ServiceFactory.GetInstance().ServiceProdutoModalidade.BeginObterProdutoModalidade(CallBackObterProdutoModalidade,
                                                                                              ServiceFactory.GetInstance().ServiceProdutoModalidade);
        }

        private void PopularComboTipoPesquisa()
        {

            cboTipoPesquisa.Items.Add("Produto");
            cboTipoPesquisa.Items.Add("Modalidade");

            cboTipoPesquisa.SelectedIndex = 0;
        }

        private void CarregarBarraBotoes()
        {
            App.MainPage.barraMenu.AddNewButton(Constantes.EnumBotoes.BOTAO_IMPORTAR.ToString(),
                "Importar",
                Constantes.SourceImageApp.BOTAO_IMPORTAR, 1,
                new ibba.src.slcomponentes.ControlMenuBar.Botao.DelegateClick(btnImportarArquivo_Click));

            App.MainPage.barraMenu.AlterarVisibilidadeBotao(Constantes.EnumBotoes.BOTAO_IMPORTAR.ToString(), AppHelper.Perfil.Contains("master"));


            App.MainPage.barraMenu.AddNewButton(Constantes.EnumBotoes.BOTAO_EXPORTAR.ToString(),
                "Exportar",
                Constantes.SourceImageApp.BOTAO_EXPORTAR, 2,
                new ibba.src.slcomponentes.ControlMenuBar.Botao.DelegateClick(btnExportar_Click));

            App.MainPage.barraMenu.AlterarVisibilidadeBotao(Constantes.EnumBotoes.BOTAO_EXPORTAR.ToString(), (AppHelper.Perfil.Contains("consulta") || AppHelper.Perfil.Contains("master")));


            App.MainPage.barraMenu.AtualizarControles();
        }

        private void CallBackObterProdutoModalidade(IAsyncResult pAsyncResult) {

            this.Dispatcher.BeginInvoke(delegate()
            {
                _produtos = ((ServiceProdutoModalidade.IProdutoModalidade)pAsyncResult.AsyncState).EndObterProdutoModalidade(pAsyncResult);

                CarregarItemSourcePesquisa();

            });

        }

        private void CarregarItemSourcePesquisa()
        {
            if (cboTipoPesquisa.SelectedIndex == 0)
                txtPesquisa.ItemsSource = (from p in _produtos select p.CodigoProduto.Trim()).Distinct();
            else
                txtPesquisa.ItemsSource = (from p in _produtos select p.CodigoModalidade.Trim()).Distinct();
        }

        private void CarregarGridProduto()      
        {
            if (cboTipoPesquisa.SelectedIndex == 0)
            {
                grdProduto.ItemsSource = (from p in _produtos
                                          where p.CodigoProduto.Trim().ToLower() == txtPesquisa.Text.Trim().ToLower()
                                          select p);

                qtdPesquisaProd = _produtos.Count();

                activity.IsBusy = false;

            }

            else
            {
                grdProduto.ItemsSource = (from p in _produtos
                                          where p.CodigoModalidade.Trim().ToLower() == txtPesquisa.Text.Trim().ToLower()
                                          select p);

                qtdPesquisaMod = _produtos.Count();

                activity.IsBusy = false;

            }

        }
        private void txtPesquisa_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key == System.Windows.Input.Key.Enter)
            {
                activity.BusyContent = "Carregando...";
                activity.IsBusy = true;
                CarregarGridProduto();
            }
        }

        private void btnPesquisar_Click(object sender, RoutedEventArgs e)
        {
            activity.BusyContent = "Carregando...";
            activity.IsBusy = true;
            CarregarGridProduto();
        }

       
        private void btnDetalhe_Click(object sender, RoutedEventArgs e)
        {
            grdProduto.SetValue(DataGrid.SelectedIndexProperty,
                                DataGridRow.GetRowContainingElement(sender as FrameworkElement).GetIndex());

            ServiceProdutoModalidade.ProdutoModalidade p = (ServiceProdutoModalidade.ProdutoModalidade)grdProduto.SelectedItem;

            if (p != null)
            {
                ExibirPaginaDetalhes(p);
            }
        }

        private void ExibirPaginaDetalhes(ServiceProdutoModalidade.ProdutoModalidade pProduto)
        {

            _pageDetalheProdutoModalidade.Show(ObterRegistroSelecionado());

        }

        private ServiceProdutoModalidade.ProdutoModalidade ObterRegistroSelecionado()
        {

            return (ServiceProdutoModalidade.ProdutoModalidade)grdProduto.SelectedItem;
        }


        private void btnExportar_Click()
        {
            _pageProdutoModalidadeExpExcel.Show();
        }

        private void btnImportarArquivo_Click()
        {
            _pageProdutoModalidadeImpExcel.Show();
        }


        private void cboTipoPesquisa_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CarregarItemSourcePesquisa();
        }

       
    }

    public class ConverterUsaProcessamento : IValueConverter
    {

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {

            if (((char)value).Equals( 'S'))

                return new SolidColorBrush(Colors.Blue) { Opacity = 0.1 };
            else
                return new SolidColorBrush(Colors.Transparent);
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return new SolidColorBrush(Colors.White);
        }
    }

}
